import Vue from "vue";
import urlConfig from "@/request/urlConfig.js";

/**
 * @description 过滤请求的地址
 * @param {*} url 当前的地址
 * @returns {string}
 */
const filterUrl = (url) => {
	if (!url) return "";
	// 如果是完整地址了，就显示完整地址，否则拼接baseUrl
	if (/^http(s)?:\/\//.test(url)) return url;
	return urlConfig.baseURL + url;
};

/**
 * @description 根据生日计算年龄
 * @param {*} birthday 生日
 * @returns {number}
 */
const filterBirthday = (birthday) => {
	if (!birthday) return 0;
	const date = new Date();
	// 如果生日的时间戳大于等于当前时间，返回0
	const birthdayTimestamp = new Date(birthday.replace(/-/g, "/")).getTime();
	if (birthdayTimestamp >= date.getTime()) return 0;
	// 获取今天的年月日
	const aYear = date.getFullYear();
	const aMonth = (date.getMonth() + 1 + "").padStart(2, "0");
	const aDay = (date.getDate() + "").padStart(2, "0");
	// 将生日数据拆分成对应的年月日
	const arr = birthday.split("-");
	const [bYear, bMonth, bDay] = arr;
	// 年龄初始化
	let result = 0;
	// 默认用今天的年份减去生日的年份再减去1
	result = Number(aYear) - Number(bYear) - 1;
	// 判断今天的月份是否大于日期的月份，大于的话年龄加1岁
	if (Number(aMonth) > Number(bMonth)) {
		result += 1;
		// 判断今天的月份是否等于日期的月份，等于的话判断day
	} else if (Number(aMonth) === Number(bMonth)) {
		// 判断天数，今天的天数大于等于日期的天数，年龄加1
		result = Number(aDay) >= Number(bDay) ? result + 1 : result;
	}
	return result;
};

Vue.filter("filterUrl", filterUrl);
Vue.filter("filterBirthday", filterBirthday);
Vue.prototype.$filterUrl = filterUrl;
